//  Copyright (c) Microsoft Corporation.  All Rights Reserved.

using System;
using System.Collections.Generic;
using System.Text;

namespace Saml20
{

    public static class Saml20Constants
    {
        // SAML 2.0 Namespace
        public const string Namespace = "urn:oasis:names:tc:SAML:2.0:assertion";
        public const string HolderOfKey = "urn:oasis:names:tc:SAML:2.0:cm:holder-of-key";
        public const string SenderVouches = "urn:oasis:names:tc:SAML:2.0:cm:sender-vouches";
        public const string UserNameNamespace = "urn:oasis:names:tc:SAML:2.0:nameid-format:WindowsDomainQualifiedName";
        public const string UserName = "UserName";
        public const string EmailNamespace = "rn:oasis:names:tc:SAML:2.0:nameid-format:emailAddress";
        public const string EmailName = "EmailName";

        // Element Names.
        public const string Action = "Action";
        public const string Assertion = "Assertion";
        public const string AssertionIDRef = "AssertionIDRef";
        public const string AssertioURIRef = "AssertionURIRef";
        public const string Issuer = "Issuer";
        public const string Subject = "Subject";
        public const string Conditions = "Conditions";
        public const string Advice = "Advice";
        public const string Statement = "Statement";
        public const string AuthnStatement = "AuthnStatement";
        public const string AuthzDecisionStatement = "AuthzDecisionStatement";
        public const string AttributeStatement = "AttributeStatement";
        public const string SubjectConfirmationData = "SubjectConfirmationData";
        public const string SubjectConfirmation = "SubjectConfirmation";
        public const string AudienceRestriction = "AudienceRestriction";
        public const string Audience = "Audience";
        public const string OneTimeUse = "OneTimeUse";
        public const string ProxyRestricton = "ProxyRestriction";
        public const string SubjectLocality = "SubjectLocality";
        public const string AuthnContext = "AuthnContext";
        public const string AuthnContextClassRef = "AuthnContextClassRef";
        public const string AuthnContextDecl = "AuthnContextDecl";
        public const string AuthnContextDeclRef = "AuthnContextDeclRef";
        public const string AuthenticatingAuthority = "AuthenticatingAuthority";
        public const string Evidence = "Evidence";
        public const string Attribute = "Attribute";
        public const string AttributeValue = "AttributeValue";
        public const string EncryptedAssertion = "EncryptedAssertion";
        public const string EncryptedAttribute = "EncryptedAttribute";

        // Attribute Names.
        public const string VersionAttribute = "Version";
        public const string IDAttribute = "ID";
        public const string IssueInstantAttribute = "IssueInstant";
        public const string NotBeforeAttribute = "NotBefore";
        public const string NotOnOrAfterAttribute = "NotOnOrAfter";
        public const string NamespaceAttribute = "Namespace";
        public const string RecipientAttribute = "Recipient";
        public const string ResourceAttribute = "Resource";
        public const string DecisionAttribute = "Decision";
        public const string InResponseToAttribute = "InResponseTo";
        public const string AddressAttribute = "Address";
        public const string MethodAttribute = "Method";
        public const string CountAttribute = "Count";
        public const string AuthnInstanceAttribute = "AuthnInstance";
        public const string SessionIndexAttribute = "SessionIndex";
        public const string SessionNotOnOrAfterAttribute = "SessionNotOnOrAfter";
        public const string DNSNameAttribute = "DNSName";
        public const string NameAttribute = "Name";
        public const string NameFormatAttribute = "NameFormat";
        public const string FriendlyNameAttribute = "FriendlyName";
        public const string NameQualifierAttribute = "NameQualifier";
        public const string SPNameQualifierAttribute = "SPNameQualifier";
        public const string FormatAttribute = "Format";
        public const string SPProviderIDAttribute = "SPProviderID";

        // Other constants.
        public const string GeneratedDateTimeFormat = "yyyy-MM-ddTHH:mm:ss.fffZ";
        internal static string[] AcceptedDateTimeFormats = new string[] {
                "yyyy-MM-ddTHH:mm:ss.fffffffZ",
                "yyyy-MM-ddTHH:mm:ss.ffffffZ",
                "yyyy-MM-ddTHH:mm:ss.fffffZ",
                "yyyy-MM-ddTHH:mm:ss.ffffZ",
                "yyyy-MM-ddTHH:mm:ss.fffZ",
                "yyyy-MM-ddTHH:mm:ss.ffZ",
                "yyyy-MM-ddTHH:mm:ss.fZ",
                "yyyy-MM-ddTHH:mm:ssZ",
                "yyyy-MM-ddTHH:mm:ss.fffffffzzz",
                "yyyy-MM-ddTHH:mm:ss.ffffffzzz",
                "yyyy-MM-ddTHH:mm:ss.fffffzzz",
                "yyyy-MM-ddTHH:mm:ss.ffffzzz",
                "yyyy-MM-ddTHH:mm:ss.fffzzz",
                "yyyy-MM-ddTHH:mm:ss.ffzzz",
                "yyyy-MM-ddTHH:mm:ss.fzzz",
                "yyyy-MM-ddTHH:mm:sszzz"};
    }

}
